// 将 Python 版本的地图数据展开逻辑转换为 JS
// 入参：mapData(字节数组/Uint8Array)、width、height、mode
// 返回：长度为 width*height 的 occupancy 数组（0=空闲，100=占用，-1=未知未在此段处理）
export function expandOccupancy(mapData, width, height, mode) {
  const total = width * height;

  if (Number(mode) === 1) {
    // 建图模式：按位展开（低位到高位）
    const occupancy = new Array(total);
    let idx = 0;

    for (let i = 0; i < mapData.length && idx < total; i++) {
      const byte = mapData[i] & 0xff;
      for (let bit = 0; bit < 8 && idx < total; bit++) {
        const isSet = (byte & (1 << bit)) !== 0; // 与 Python 一致：低位在前
        occupancy[idx++] = isSet ? 0 : 100;
      }
    }
    return occupancy;
  } else {
    // 非建图模式：直接使用 mapData（已是逐像素值）
    // 确保裁剪为 width*height
    return Array.prototype.slice.call(mapData, 0, total);
  }
}